const express = require('express')
const path = require('path')
// 导入路由
const router = require('./router')
// body-parser导入，处理post请求参数  body-parser是非常常用的一个express中间件，主要作用是对post请求的请求体进行解析
const bodyParser = require('body-parser')
// 导入用于token验证的express模块 
const expressJWT = require('express-jwt')

// 创建服务器
const app = express()

app.listen('3002', () => {
    console.log('http://127.0.0.1:3002');
})

// 托管静态页面
app.use('/', express.static(path.join(__dirname, '/views')))
// 托管静态资源
app.use(express.static('public'))

// 添加中间件的引入，use之后，可以通过query或者body获取参数，以下代码基本上包含了所有的使用场景
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: false }))

app.use(expressJWT({ secret: 'heros', algorithms: ['HS256'] }).unless({ path: ['/login'] }))
// 注册路由
app.use(router)

// 错误处理中间件(写在最后)，判断token错误并响应信息给客户端让其做判断
app.use((err, req, res, next) => {
    console.log(err.name);
    if (err.name === 'UnauthorizedError') {
        return res.send({
            code: 401,
            message: '无效的token！'
        })
    }
    res.send({
        code: 500,
        message: '未知的错误！'
    })
})
